package com.jia.explore.recursion;

/**
 * @program: Leetcode
 * @description: 汉诺塔
 *
 * @author: STU756
 * @create: 2020-08-17 16:12
 */
public class HanoiTower {
    /**
     *
     * @param n 盘子的个数
     * @param A 源柱子
     * @param B 辅助柱子
     * @param C 目标柱子
     */
    public static  void hanoi(int n, char A, char B, char C) {
        //递归结束条件
        if(n == 1) {
            move(A,C);//只有一个盘子，直接移动到C上
        }else {
            hanoi(n - 1, A, C,B); //上面n-1个盘子从A绕过C移到B上
            move(A,C);//最底的一个盘子n移动到C上
            hanoi(n - 1, B, A, C);//将n-1个盘子从B绕过A移动到C上
        }
    }
    private static void move(char s, char d) {
        System.out.println(s + "->" + d);
    }

    public static void main(String[] args) {
        hanoi(10, 'A', 'B', 'C');
    }
}
